www.gusucode.com > 循环自相关函数工具箱源码程序 > matlab代做 修改 程序循环自相关函数工具箱/cyclostationary_toolbox/cyclic_cross_correlation.m
function R=cyclic_cross_correlation(x,y,alpha,max_tau) % % CYCLIC_CROSS_CORRELATION % % calculates the cyclic cross correlation between % two signals x,y at frequency alpha % % R(k*alpha,tau)=E{x(t-tau/2)y(t+tau/2)exp(-jk(alpha)t)} % for k=0 ... 2*pi/alpha-1 % % USAGE % R=cyclic_cross_correlation(x,y,alpha,max_tau) % % calculate cross correlation up to max_tau time lags % File: cyclic_cross_correlation.m % Last Revised: 23/4/98 % Created: 24/11/97 % Author: Andrew C. McCormick % (C) University of Strathclyde % Simple error checks if nargin~=4 error('Incorrect number of arguments for function cyclic_cross_correlation'); end if alpha>2*pi error('Cyclic frequency must be less than 2 pi in function cyclic_cross_correlation'); end T=ceil(2*pi/alpha)-1; lx=length(x); t=0:lx-1; R=zeros(max_tau*2+1,T+1); % Compute even time shift segments for tau=-max_tau:2:max_tau for k=0:T R(tau+1+max_tau,k+1)=mean(x(1:lx-max_tau-tau).*y(max_tau+tau+1:lx) ... .*exp(-j*k*alpha*t(1+(max_tau+tau)/2:lx-(max_tau+tau)/2))); end end % Compute odd time shift segments t=t+0.5; for tau=-max_tau+1:2:max_tau for k=0:T R(tau+1+max_tau,k+1)=mean(x(1:lx-tau-max_tau).*y(max_tau+tau+1:lx) ... .*exp(-j*k*alpha*t(1+(max_tau+tau-1)/2:lx-(max_tau+tau+1)/2))); end end